Pen - Load Balance
2011/06/05 |
Install Pen to configure Load Balance server. Pen is a light weight simple load balancer.
This example shows to configure on the environment like follows.
(1) gw.srv.world [10.0.0.50] - Pen Server (2) www01.srv.world [10.0.0.51] - Web Server#1 (3) www02.srv.world [10.0.0.52] - Web Server#2 |
|
[1] | Install and Configure Pen |
[root@gw ~]#
vi /etc/pen.conf # create new # log file LOGFILE=/var/log/pen.log # output file of status WEBFILE=/var/www/pen/webstats.html # control port CONTROL=127.0.0.1:10080 # max connections MAX_CONNECTIONS=500 # listen port PORT=80 # backend servers BACKEND=2 # IP address of a backend SERVER1=10.0.0.51:80 # IP address of a backend SERVER2=10.0.0.52:80
[root@gw ~]#
vi /etc/rc.d/init.d/pend # create init script # this is an example #!/bin/bash # pend: Start/Stop Pend # chkconfig: - 90 10 # description: Pen is a light weight simple load balancer. # pidfile: /var/run/pen.pid . /etc/rc.d/init.d/functions . /etc/sysconfig/network . /etc/pen.conf LOCKFILE="/var/lock/subsys/pen" PID=/var/run/pen.pid PROG=/usr/bin/pen RETVAL=0 start() { echo -n $"Starting Pend: " SERVER=`grep "^SERVER" /etc/pen.conf | cut -d= -f2` daemon $PROG -w $WEBFILE -x $MAX_CONNECTIONS -p $PID -l $LOGFILE -C $CONTROL -S $BACKEND -r $PORT $SERVER RETVAL=$? echo [ $RETVAL -eq 0 ] && touch $LOCKFILE return $RETVAL } stop() { echo -n $"Stopping Pend: " killproc $PROG RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f $PID $LOCKFILE return $RETVAL } case "$1" in start) start ;; stop) stop ;; status) status pend ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|status|restart}" exit 1 esac exit $?
[root@gw ~]#
vi /etc/logrotate.d/pen # this is an example /var/log/pen.log { daily copytruncate compress notifempty missingok postrotate /etc/rc.d/init.d/pend restart 2>&1 > /dev/null || true endscript } chmod 755 /etc/rc.d/init.d/pend [root@gw ~]# /etc/rc.d/init.d/pend start Starting Pend: [ OK ] [root@gw ~]# chkconfig --add pend [root@gw ~]# chkconfig pend on |
[2] | Access to the URL you set and make sure backend server answers normally like follows. |
[3] | Shutdown other httpd manually and make sure another httpd answers normally like follows. |
[4] | Configure the tool that it's possible to watch Pen's status. |
[root@gw ~]# cp /usr/share/doc/pen-*/penstats /var/www/pen
[root@gw ~]#
vi /var/www/pen/penstats # line 4: change PIDFILE= /var/run/pen.pid
# line 5: change WEBFILE= /var/www/pen/webstats.html
[root@gw ~]#
vi /etc/httpd/conf.d/pen.conf # change Alias /pen/ /var/www/pen/<Directory /var/www/pen/> DirectoryIndex penctl.cgi Options ExecCGI order deny,allow deny from all allow from 127.0.0.1 10.0.0.0/24 # IP address you permit </Directory> /etc/rc.d/init.d/httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] [root@gw ~]# chmod 755 /var/www/pen/penstats [root@gw ~]# /var/www/pen/penstats > /dev/null # run
[root@gw ~]#
crontab -e # update by 5 minutes
*/5 * * * * /var/www/pen/penstats > /dev/null
|
[5] | Access to "http://(pen's hostname or IP address):(httpd listen port)/pen/webstats.html" and make sure following site is shown normally. |